/********************************************************************
    Copyright (c) 2000-2008 Steven E. Hugg.

    This file is part of FLCore.

    FLCore is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    FLCore is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with FLCore.  If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
package com.fasterlight.game;

/*
A GameEvent is an abstract class for use with the Game object.
It takes place at a given time tick, and can be cancelled.
Override it to implement your own handleEvent().
*/
public abstract class GameEvent
implements Comparable, java.io.Serializable
{
	protected long eventtime;
	protected int seq;
	protected boolean cancelled;

	private static int NEXT_SEQ = 0;

	//

	public GameEvent(long eventtime)
	{
		this.eventtime = eventtime;
		this.seq = NEXT_SEQ++;
	}

	public long getEventTime()
	{
		return eventtime;
	}

	public abstract void handleEvent(Game game);

	public int compareTo(Object o)
	{
		GameEvent go = (GameEvent)o;
		long l = eventtime-go.eventtime;
		return (l==0) ? (seq-go.seq) : (l<0) ? -1 : 1;
	}
}
